In the gaming industry, random numbers are commonly used to produce outcomes for slot machine games. Typically, the generated numbers are used as bingo or keno numbers, used to determine a stop position for a “virtual reel,” or used to look up (index) an outcome from a table of outcomes defined for a particular game or game round. Random numbers may also be used to select displays to convey to the player an existing outcome.
The term “random numbers” may refer to true-random numbers (measured from random phenomena), or pseudo-random numbers, which are generated with algorithms to appear unpredictable and have statistically random distributions like true random numbers. Pseudo-random number generators (PRNGs) are algorithms that produce sequences of pseudo-random numbers with good random properties. But typical PRNGs will eventually repeat their sequence if they run for a long time, so they are not random by the strictest definition. Nevertheless, common usage in the gaming industry and programming industry is to simply refer to such pseudo-random numbers as random.
One of the most common PRNGs is the linear congruential generator, which uses a previously-generated value of the algorithm to generate a new random number according to the following equation:Xn+1=(aXn+c)mod m  (1)
Where Xn+1 is the resulting random number, Xn is the previous output of the algorithm (with n=0 designating the seed to start the sequence of pseudo-random numbers), and a, c, and m are carefully chosen constant integers. This algorithm has been criticized because it fails some of the popular tests used to characterize a RNG as “random enough.” However, it is considered sufficiently fair for use in many gaming applications, and variations of the algorithm are used in many gaming jurisdictions.
Other PRNG algorithms are also known in the art, such as the “Mersenne twister” algorithm, various linear-feedback-shift-register (LFSR) algorithms, and the lagged-Fibonacci algorithm, to name a few examples. Other popular PRNG algorithms involve combining multiple known algorithms to improve the random properties of the output number stream.
Most computer programming languages include functions or routines for pseudo-random number generation. Where random qualities or security are important, programmers also develop their own implementation of a PRNG. Such routines often provide a pseudo-random number formatted as a digital byte, or a floating point number uniformly distributed between 0 and some chosen number. The numbers can be scaled using a multiplier or distribution function so that they are in the range needed for application in, for example, a slot machine prize table index. PRNG algorithms for use in slot machines are carefully tested and regulated by the relevant governing gaming commissions. Often certain algorithms or implementations are disallowed for fairness or security reasons.
Some slot machines have a PRNG algorithm running as a computer process inside the slot machine, while others request a random number from a central server that runs one or more PRNG algorithms. For simplicity, the term RNG as used in the description shall include PRNG, as is generally used in the gaming industry.
Gaming jurisdictions often place limitations not only on what kind of RNG can be used, but also on which machines are allowed to run the RNG. What is needed, therefore, are secure and fair RNG algorithms that meet legal requirements in the relevant jurisdictions, and can provide suitable random numbers for modern slot machine games.